package br.padroes.templateMethod;

import java.util.ArrayList;

public class TiposDeListagem {
	protected ArrayList<Livro> livros;
	protected OrdenadorTemplate ordenador;

	public TiposDeListagem(ModoDeListagem modo) {
		livros = new ArrayList<Livro>();
		switch (modo) {
		case porGenero:
			ordenador = new OrdenadorPorGenero();
			break;
		case porEstrela:
			ordenador = new OrdenadorPorEstrela();
			break;
		case porTitulo:
			ordenador = new OrdenadorPorTitulo();
			break;
		default:
			break;
		}
	}

	public void setModoDeListagem(ModoDeListagem modo) {
		ordenador = null;
		switch (modo) {
		case porGenero:
			ordenador = new OrdenadorPorGenero();
			break;
		case porEstrela:
			ordenador = new OrdenadorPorEstrela();
			break;
		case porTitulo:
			ordenador = new OrdenadorPorTitulo();
			break;
		default:
			break;
		}
	}

	public void adicionarLivro(String genero, int estrela, String titulo) {
		livros.add(new Livro(genero, estrela, titulo));
	}

	public void mostrarListaDeReproducao() {
		ArrayList<Livro> novaLista = new ArrayList<Livro>();
		novaLista = ordenador.ordenarMusica(livros);

		for (Livro livro : novaLista) {
			System.out.println(livro.titulo + " - " + livro.genero + "\n Estrelas: " + livro.estrelas);
		}
	}
}
